package item17;

/**
 * 第17条：要么为继承而设计，并提供文档说明，要么就禁止继承
 */
public class Test01 {

    public static void main(String[] args) {

        // 该类必须有文档说明它可覆盖(overridable)的方法的自用性(self-use).
        // 类必须通过某种形式提供适当的钩子(hook),以便能够进入到它的内部工作流程中，这种形式可以是精心选择的受保护的方法
        // 对于为了继承而设计的类，唯一的测试方法就是编写子类。
        // 必须在发布类之前先编写子类对类进行测试。
        // 构造器决不能调用可被覆盖的方法
        Sub sub = new Sub();
        sub.overrideMe();
        // 无论是clone还是readObject,都不可以调用可覆盖的方法，不管是以直接还是间接的方式。
        // 对于那些并非为了安全地进行子类化而设计和编写文档的类，要禁止子类化。

    }

}
